package com.example.extra.exception;

import lombok.Getter;

/**
 * 业务异常类，用于处理项目中所有业务逻辑相关的异常
 */
@Getter
public class BizException extends RuntimeException{

    /**
     * 错误码
     */
    private final Integer errorCode;

    /**
     * 错误提示信息
     */
    private final String message;

    /**
     * 错误详情（可选，用于更详细的错误描述）
     */
    private final String detail;


    /**
     * 构造方法：仅包含错误码和错误信息
     * @param errorCode 错误码
     * @param message 错误信息
     */
    public BizException(Integer errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
        this.message = message;
        this.detail = null;
    }

    /**
     * 构造方法：包含错误码、错误信息和详细描述
     * @param errorCode 错误码
     * @param message 错误信息
     * @param detail 错误详情
     */
    public BizException(Integer errorCode, String message, String detail) {
        super(message);
        this.errorCode = errorCode;
        this.message = message;
        this.detail = detail;
    }

    /**
     * 构造方法：包含错误码、错误信息和原始异常
     * @param errorCode 错误码
     * @param message 错误信息
     * @param cause 原始异常
     */
    public BizException(Integer errorCode, String message, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
        this.message = message;
        this.detail = null;
    }

    /**
     * 构造方法：全参数
     * @param errorCode 错误码
     * @param message 错误信息
     * @param detail 错误详情
     * @param cause 原始异常
     */
    public BizException(Integer errorCode, String message, String detail, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
        this.message = message;
        this.detail = detail;
    }

}
